package ynu.edu.merchant.service;

import org.springframework.data.domain.Page;
import ynu.edu.merchant.dto.MerchantDTO;
import ynu.edu.merchant.dto.MerchantLoginDTO;
import ynu.edu.merchant.vo.MerchantVO;

import java.util.List;

/**
 * 商家服务接口
 */
public interface MerchantService {

    /**
     * 创建商家
     *
     * @param merchantDTO 商家信息
     * @return 商家信息
     */
    MerchantVO createMerchant(MerchantDTO merchantDTO);

    /**
     * 更新商家信息
     *
     * @param merchantDTO 商家信息
     * @return 商家信息
     */
    MerchantVO updateMerchant(MerchantDTO merchantDTO);

    /**
     * 获取商家信息
     *
     * @param id 商家ID
     * @return 商家信息
     */
    MerchantVO getMerchantById(Long id);

    /**
     * 删除商家
     *
     * @param id 商家ID
     * @return 是否成功
     */
    boolean deleteMerchant(Long id);

    /**
     * 根据分类ID查询商家列表
     *
     * @param categoryId 分类ID
     * @param page       页码
     * @param size       每页大小
     * @return 商家列表
     */
    Page<MerchantVO> getMerchantsByCategoryId(Long categoryId, int page, int size);

    /**
     * 根据商家名称模糊查询
     *
     * @param name 商家名称
     * @param page 页码
     * @param size 每页大小
     * @return 商家列表
     */
    Page<MerchantVO> searchMerchantsByName(String name, int page, int size);

    /**
     * 获取推荐商家列表
     *
     * @return 商家列表
     */
    List<MerchantVO> getRecommendedMerchants();

    /**
     * 更新商家状态
     *
     * @param id     商家ID
     * @param status 状态：0-休息中，1-营业中
     * @return 是否成功
     */
    boolean updateMerchantStatus(Long id, Integer status);
    
    /**
     * 商家登录
     *
     * @param loginDTO 登录信息
     * @return JWT令牌
     */
    String login(MerchantLoginDTO loginDTO);
} 